import csv

# csv文件追加写 文本按照gbk编码 csv_file_name输出文件路径 resultList应该是个存放对象的数组
def csvAppendWrite(csv_file_name, resultList):
    if not resultList or len(resultList) == 0:
        return
    fieldnames = resultList[0].keys()
    # 写入CSV文件（追加模式）
    with open(csv_file_name, 'a', newline='') as csvfile:

        # 创建CSV写入对象
        csv_writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

        # 如果文件不存在或为空，写入表头
        if not os.path.exists(csv_file_name) or os.path.getsize(csv_file_name) == 0:
            csv_writer.writeheader()

        # 遍历结果列表，写入每一行数据
        for result in resultList:
            # 对每个值进行编码转换，替换不支持的字符
            encoded_result = {
                key: value.replace('\u200b', '').encode('gbk', 'ignore').decode('gbk') if isinstance(value,
                                                                                                     str) else value for
                key, value in result.items()}
            csv_writer.writerow(encoded_result)